#include <bits/stdc++.h>
using namespace std;
char buf[1<<23],*p1=buf,*p2=buf,obuf[1<<23],*O=obuf;
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
inline int read(){
    int x=0,f=1;char ch=getchar();
    while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();}
    while(isdigit(ch)) x=x*10+(ch^48),ch=getchar();
    return x*f;
}
const int N=8e5+4,inf=1e9;
int n,a[N],b[N];
namespace bl{
    int ans[N];
    void main(){
        memset(ans,0x7f,sizeof(ans));
        for(int l=1;l<=n;l++){
            for(int r=l,na=inf,nb=inf;r<=n;r++){
                na=min(na,a[r]),nb=min(nb,b[r]);
                ans[r-l+1]=min(ans[r-l+1],abs(na-nb));
            }
        }
        for(int i=1;i<=n;i++) cout<<ans[i]<<"\n";
    }
}
namespace A{
    void main(){
        int minn=inf;
        for(int i=1;i<=n;i++) minn=min(minn,a[i]);
        for(int i=1;i<=n;i++) cout<<minn-1<<"\n";
    }
}
namespace B{
    int ans[N];
    int sum[N];
    struct seg{
        #define ls(x) (x<<1)
        #define rs(x) (x<<1|1)
        int t[N<<1],ll[N<<1],rr[N<<1],len[N<<1];
        int m;
        void pushup(int x){
            assert(x<=m);
            if(len[ls(x)]==ll[ls(x)]) ll[x]=ll[ls(x)]+ll[rs(x)];
            else ll[x]=ll[ls(x)];
            if(len[rs(x)]==rr[rs(x)]) rr[x]=rr[rs(x)]+rr[ls(x)];
            else rr[x]=rr[rs(x)];
            t[x]=max(max(t[ls(x)],t[rs(x)]),rr[ls(x)]+ll[rs(x)]);
        }
        void update(int x){
            assert(x<=m);
            x+=m-1;
            t[x]=ll[x]=rr[x]=1;
            for(x>>=1;x;x>>=1) pushup(x);
        }
        void init(int x){
            m=x*4;
            for(int i=m;i<m<<1;i++) len[i]=1;
            for(int i=m-1;i;i--) len[i]=len[ls(i)]+len[rs(i)];
        }
    }T;
    struct name{
        int v,pos;
    }c[N];
    void main(){// 2409945
        memset(ans,0,sizeof(ans));
        memset(sum,0,sizeof(sum));
        T.init(n);
        // int ress=1e9;
        // for(int i=1;i<=n;i++){
        //     if(i+2908-1>n) break;
        //     int res=1e9;
        //     for(int j=i;j<=i+2908-1;j++) res=min(res,a[j]);
        //     if(res==1e9) cerr<<"!!\n";
        //     if(res==2409945) cerr<<i<<"\n";
        //     ress=min(ress,(int)1e9-res);
        // }
        // cerr<<ress<<"!\n";
        // exit(0);

        // for(int i=1;i<=2e5;i++){
        //     if(a[i]>=2409945) T.update(i);
        //     sum[i]=sum[i-1]+(a[i]>=2409945);
        // }
        // cerr<<T.t[1]<<"\n";
        // exit(0);
        // for(int i=2908;i<=n;i++){
        //     if(sum[i]-sum[i-2908]==2908){
        //         cerr<<"yes\n";
        //         exit(0);
        //     }
        // }
        for(int i=1;i<=n;i++) c[i]={a[i],i};
        sort(c+1,c+n+1,[](name x,name y){return x.v>y.v;});
        for(int i=1;i<=n;i++){
            T.update(c[i].pos);
            ans[T.t[1]]=max(c[i].v,ans[T.t[1]]);
        }
        for(int i=n;i;i--) ans[i]=max(ans[i],ans[i+1]);
        for(int i=1;i<=n;i++) cout<<(int)1e9-ans[i]<<"\n";
    }
}
signed main(){
    freopen("min.in","r",stdin);
    freopen("min.out","w",stdout);
    n=read();
    bool fla=1,flb=1;
    for(int i=1;i<=n;i++) a[i]=read();
    for(int i=1;i<=n;i++){
        b[i]=read();
        if(b[i]!=1) fla=0;
        if(b[i]!=1e9) flb=0;
    }
    if(fla) A::main();
    else if(flb) B::main();
    else bl::main();
    return 0;
}   